home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 9
/
FM Towns Free Software Collection 9.iso
/
t_os
/
tool
/
nami
/
nami.bas
next >
Wrap
BASIC Source File
|
1994-11-16
|
7KB
|
169 lines
10010 '--------------------------------------------------------------------
10020 '
10030 ' 波の合成
10040 '
10050 ' Copyright (C) TeC 1994
10060 '--------------------------------------------------------------------
10070 SCREEN 0 : SCREEN@ 0
10080 WINDOW(-.1!,10.1!)-(1.1!,-10.1!)
10090 'DIM SE01(5795),SE02(1647),SE03(4014),SE04(18819),SE05(7189) '**
10100 'DIM SE06(16507),SE07(4533),SE08(8348),SE09(33025),SE10(35375) '**
10110 'LOAD@"se_01.snd",SE01 '**
10120 'LOAD@"se_02.snd",SE02 '**
10130 'LOAD@"se_03.snd",SE03 '**
10140 'LOAD@"se_04.snd",SE04 '**
10150 'LOAD@"se_05.snd",SE05 '**
10160 'LOAD@"se_06.snd",SE06 '**
10170 'LOAD@"se_07.snd",SE07 '**
10180 'LOAD@"se_08.snd",SE08 '**
10190 'LOAD@"se_09.snd",SE09 '**
10200 'LOAD@"se_10.snd",SE10 '**
10210 DIM A(10),f(10),θ(10),Y(10),A$(13)
10220 PALETTE 1,[ 63,127,255]
10230 PALETTE 2,[ 63,255,127]
10240 PALETTE 3,[131, 0, 89]
10250 PALETTE 4,[223,223, 0]
10260 PALETTE 5,[ 0,143,143]
10270 PALETTE 6,[ 63,127,255]
10280 PALETTE 7,[ 63,255,127]
10290 PALETTE 8,[131, 0, 89]
10300 PALETTE 9,[223,223, 0]
10310 PALETTE 10,[ 0,143,143]
10320 PALETTE 11,[255,255,255]
10330 PALETTE 12,[ 63, 63, 63]
10340 PALETTE 13,[127,127,127]
10350 PALETTE 14,[191,191,191]
10360 π=3.14159!
10370 A$( 0)=" "
10380 A$( 1)="☆"
10390 A$( 2)="画面の上下方向は±10、左右方向は-0.1秒~+1.1秒です。"
10400 A$( 3)="今から入力する波のデータは、 個目です。(残り )"
10410 A$( 4)="Asin(ωt+θ) ω=2πf"
10420 A$( 5)="振幅A"
10430 A$( 6)="周波数f[濔"
10440 A$( 7)="位相θ[°]"
10450 A$( 8)=" を入力してください。"
10460 A$( 9)="今入力した波のデータは、 個目です。(残り ) "
10470 A$(10)="処理 >>> 入力 演算 取り消す 取り消して演算"
10480 A$(11)="データがありません"
10490 A$(12)="データがいっぱいです"
10500 A$(13)="プログラムを終了する >>> No Yes"
10510 N=1
10520 'IF D=2 THEN PCMPLAY SE05,127 ELSE PCMPLAY SE03,127 '**
10530 CLS
10540 COLOR 7
10550 LOCATE 0, 0 : PRINT A$(2)
10560 LOCATE 0, 1 : PRINT A$(3)
10570 COLOR 6
10580 LOCATE 28, 1 : PRINT USING"##";N
10590 LOCATE 48, 1 : PRINT USING"##";11-N
10600 COLOR 7
10610 LOCATE 0, 3 : PRINT A$(4)
10620 LOCATE 0, 5 : PRINT A$(5)+A$(8)
10630 LOCATE 2, 6 : INPUT"",IN$ : CY=6 : GOSUB *文字判定
10640 A(N)=IN
10650 LOCATE 0, 8 : PRINT A$(6)+A$(8)
10660 LOCATE 2, 9 : INPUT"",IN$ : CY=9 : GOSUB *文字判定
10670 f(N)=IN
10680 LOCATE 0,11 : PRINT A$(7)+A$(8)
10690 LOCATE 2,12 : INPUT"",IN$ : CY=12 : GOSUB *文字判定
10700 θ(N)=IN
10710 LOCATE 0, 1 : PRINT A$(9)
10720 COLOR 6
10730 LOCATE 24, 1 : PRINT USING"##";N
10740 LOCATE 44, 1 : PRINT USING"##";10-N
10750 COLOR 7
10760 LOCATE 0,15 : PRINT A$(10)
10770 D=0 : DD=0
10780 COLOR 6
10790 LOCATE 10,15 : PRINT A$(1)
10800 IN$=INKEY$ : IF IN$="" THEN 10800
10810 IF IN$=CHR$(&H1C) THEN D=D+1 : IF D>3 THEN D=3 ELSE D=D : GOTO 10930
10820 IF IN$=CHR$(&H1D) THEN D=D-1 : IF D<0 THEN D=0 ELSE D=D : GOTO 10930
10830 IF IN$=CHR$(&H0D) THEN ON D GOTO 11130,10520,11050 ELSE 10800
10840 'PCMPLAY SE03,127 '**
10850 N=N+1 : IF N<11 THEN 10520
10860 N=10
10870 CLS
10880 COLOR 7
10890 LOCATE 2,23 : PRINT A$(12)
10900 'PCMPLAY SE09,127 '**
10910 TIME$="00:00:00"
10920 IF TIME<4 THEN 10920 ELSE 11130
10930 'PCMPLAY SE02,127 '**
10940 ON D GOTO 10970,11000,11030
10950 LOCATE 10,15 : PRINT A$(1)
10960 LOCATE 19,15 : PRINT A$(0) : GOTO 10800
10970 LOCATE 10,15 : PRINT A$(0)
10980 LOCATE 19,15 : PRINT A$(1)
10990 LOCATE 28,15 : PRINT A$(0) : GOTO 10800
11000 LOCATE 19,15 : PRINT A$(0)
11010 LOCATE 28,15 : PRINT A$(1)
11020 LOCATE 41,15 : PRINT A$(0) : GOTO 10800
11030 LOCATE 28,15 : PRINT A$(0)
11040 LOCATE 41,15 : PRINT A$(1) : GOTO 10800
11050 'PCMPLAY SE06,127 '**
11060 N=N-1 : IF N>0 THEN 11140
11070 'PCMPLAY SE09,127 '**
11080 CLS
11090 COLOR 7
11100 LOCATE 2,23 : PRINT A$(11)
11110 TIME$="00:00:00"
11120 IF TIME<4 THEN 11120 ELSE 10510
11130 'PCMPLAY SE04,127 '**
11140 CLS 1
11150 FOR I=-1 TO 11
11160 LINE(I/10,10)-(I/10,-10),PSET,%12
11170 NEXT I
11180 LINE(.5!,10)-(.5!,-10),PSET,%13 : LINE(1,10)-(1,-10),PSET,%14
11190 FOR I=-9 TO 9
11200 LINE(.005!,I)-(-.005!,I),PSET,%13
11210 NEXT I
11220 LINE(.01!,-5)-(-.01!,-5),PSET,%13:LINE(.02!,-10)-(-.02!,-10),PSET,%13
11230 LINE(.01!, 5)-(-.01!, 5),PSET,%13:LINE(.02!, 10)-(-.02!, 10),PSET,%13
11240 LINE(-.1!,0)-(1.1!,0),PSET,%14 : LINE(0,10)-(0,-10),PSET,%14
11250 FOR TC=-1000 TO 11000
11260 T=TC/10000
11270 Y(0)=0
11280 FOR I=1 TO N
11290 IN$=INKEY$ : IF IN$=CHR$(&H18) THEN GOSUB *中断
11300 Y(I)=A(I)*SIN(2*π*f(I)*T+θ(I)*π/180)
11310 Y(0)=Y(0)+Y(I)
11320 PSET(T,Y(I)),%I
11330 NEXT I
11340 PSET(T,Y(0)),%11
11350 NEXT TC
11360 'IF DD=0 THEN PCMPLAY SE10,127 '**
11370 D=1
11380 COLOR 7
11390 LOCATE 9,0 : PRINT A$(13)
11400 COLOR 6
11410 LOCATE 35,0 : PRINT A$(1)
11420 IN$=INKEY$ : IF IN$="" THEN 11420
11430 IF IN$=CHR$(&H1C) THEN D=0 ELSE 11460
11440 'PCMPLAY SE02,127 '**
11450 LOCATE 35,0 : PRINT A$(0) : LOCATE 42,0 : PRINT A$(1) : GOTO 11420
11460 IF IN$=CHR$(&H1D) THEN D=1 ELSE 11490
11470 'PCMPLAY SE02,127 '**
11480 LOCATE 35,0 : PRINT A$(1) : LOCATE 42,0 : PRINT A$(0) : GOTO 11420
11490 IF IN$=CHR$(&H0D) THEN ON D GOTO 10510 ELSE 11420
11500 'PCMPLAY SE08,127 '**
11510 TIME$="00:00:00"
11520 IF TIME<2 THEN 11520
11530 CLS
11540 WINDOW(0,0)-(639,479)
11550 PALETTE
11560 CLEAR
11570 END
11580 *文字判定
11590 'PCMPLAY SE01,127 '**
11600 IN=VAL(IN$)
11610 IF NOT IN=0 THEN RETURN
11620 LOCATE 2,CY : PRINT SPC(78)
11630 IF IN=0 THEN LOCATE 2,CY : PRINT"0"
11640 RETURN
11650 *中断
11660 'PCMPLAY SE07,127 '**
11670 I=N : TC=11000 : DD=1
11680 RETURN 11330